#ifndef UNIT_H_INCLUDED
#define UNIT_H_INCLUDED

#include "boost/tuple/tuple.hpp"

#include "unit_types.hpp"

class unit
{
public:
	int hitpoints() const {return hit_points_;}
	int max_hitpoints() const {return max_hit_points_;}
	void set_hitpoints(int hp) {hit_points_ = hp;}
	int experience() const {return experience_;}
	int max_experience() const {return max_experience_;}
	void set_experience(int xp) {experience_ = xp;}
	int level() const {return level_;}
	
	enum state_t {STATE_SLOWED = 0, STATE_POISONED, STATE_PETRIFIED,
		STATE_UNCOVERED, STATE_NOT_MOVED, STATE_UNHEALABLE, STATE_GUARDIAN, STATE_UNKNOWN = -1};
	void set_state(state_t state, bool value);
	bool get_state(state_t state) const;

	const std::vector<attack_type>& attacks() const {return attacks_;}
	std::vector<attack_type>& attacks() {return attacks_;}

	int hit_points_;
	int max_hit_points_;
	int experience_;
	int max_experience_;
	int level_;


	std::vector<bool> known_boolean_states_;

	std::string role_;
	std::vector<attack_type> attacks_;
};

#endif
